One-to-One, One-to-Many, Many-to-One, Many-to-Many Mapping গাইড ও নোট

Java Technologies - হাইবারনেট (Hibernate) - Hibernate Mapping Techniques
342

Hibernate হল একটি জনপ্রিয় ORM (Object-Relational Mapping) ফ্রেমওয়ার্ক যা ডাটাবেস টেবিলের মধ্যে অবজেক্ট সম্পর্ক (relationships) তৈরি করতে সহায়ক। Hibernate ব্যবহার করে বিভিন্ন সম্পর্ক (relationship) যেমন One-to-One, One-to-Many, Many-to-One, এবং Many-to-Many ম্যাপিং করা যেতে পারে।

এখানে Hibernate-এ One-to-One, One-to-Many, Many-to-One, এবং Many-to-Many সম্পর্কের ম্যাপিংয়ের বিস্তারিত আলোচনা করা হলো।


1. One-to-One Mapping

One-to-One Mapping এমন একটি সম্পর্ক যেখানে একটি অবজেক্ট অন্য একটি অবজেক্টের সাথে একে অপরের সাথে সম্পর্কিত থাকে। অর্থাৎ, একে অপরের সাথে এক একক সম্পর্ক থাকে।

Example: Employee এবং Address ক্লাসের মধ্যে একে অপরের সাথে সম্পর্ক।

  • Entity Classes:
@Entity
public class Employee {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int id;
    private String name;

    @OneToOne
    @JoinColumn(name = "address_id")
    private Address address; // Employee has one Address

    // Getters and setters
}

@Entity
public class Address {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int id;
    private String street;
    private String city;

    @OneToOne(mappedBy = "address")
    private Employee employee; // Address belongs to one Employee

    // Getters and setters
}
  • Explanation:
    • @OneToOne: এটি সম্পর্কের ধরন নির্ধারণ করে, যেখানে একটি Employee একটিমাত্র Address এর সাথে সম্পর্কিত।
    • @JoinColumn: এটি ডাটাবেসের সারণীতে একটিমাত্র কলাম তৈরি করে যা এই সম্পর্কটিকে মান্য করে।

2. One-to-Many Mapping

One-to-Many Mapping এমন একটি সম্পর্ক যেখানে একটি অবজেক্ট একাধিক অবজেক্টের সাথে সম্পর্কিত থাকে। এক্ষেত্রে, একটি Parent অবজেক্ট অনেকগুলো Child অবজেক্টের সাথে সম্পর্কিত থাকে।

Example: Department এবং Employee ক্লাসের মধ্যে সম্পর্ক, যেখানে একটিমাত্র Department অনেক Employee ধারণ করে।

  • Entity Classes:
@Entity
public class Department {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int id;
    private String name;

    @OneToMany(mappedBy = "department")
    private Set<Employee> employees; // A department has many employees

    // Getters and setters
}

@Entity
public class Employee {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int id;
    private String name;

    @ManyToOne
    @JoinColumn(name = "department_id")
    private Department department; // An employee belongs to one department

    // Getters and setters
}
  • Explanation:
    • @OneToMany: এটি নির্ধারণ করে যে একটি Department একাধিক Employee ধারণ করতে পারে।
    • mappedBy: এটি Employee ক্লাসের department ফিল্ডের মাধ্যমে সম্পর্কটি নির্দেশ করে।
    • @ManyToOne: এটি Employee কে Department এর সাথে সম্পর্কিত করে।

3. Many-to-One Mapping

Many-to-One Mapping একটি সম্পর্ক যেখানে একাধিক অবজেক্ট একটি একক অবজেক্টের সাথে সম্পর্কিত থাকে। এটি One-to-Many সম্পর্কের বিপরীত।

Example: Employee এবং Department ক্লাসের মধ্যে সম্পর্ক, যেখানে একাধিক Employee একটি Department এর সাথে সম্পর্কিত।

  • Entity Classes:
@Entity
public class Employee {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int id;
    private String name;

    @ManyToOne
    @JoinColumn(name = "department_id")
    private Department department; // Multiple employees belong to one department

    // Getters and setters
}

@Entity
public class Department {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int id;
    private String name;

    // Getters and setters
}
  • Explanation:
    • @ManyToOne: এটি Employee এর একাধিক ইনস্ট্যান্সকে Department এর একটি ইনস্ট্যান্সের সাথে সম্পর্কিত করে।
    • @JoinColumn: এটি সম্পর্কিত ডাটাবেস টেবিলের কলামটি নির্দেশ করে।

4. Many-to-Many Mapping

Many-to-Many Mapping একটি সম্পর্ক যেখানে একাধিক অবজেক্ট একাধিক অবজেক্টের সাথে সম্পর্কিত থাকে। অর্থাৎ, একটি Student একাধিক Course এর সাথে এবং একটি Course একাধিক Student এর সাথে সম্পর্কিত থাকে।

Example: Student এবং Course ক্লাসের মধ্যে সম্পর্ক, যেখানে একাধিক Student একাধিক Course গ্রহণ করতে পারে।

  • Entity Classes:
@Entity
public class Student {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int id;
    private String name;

    @ManyToMany
    @JoinTable(
        name = "student_course",
        joinColumns = @JoinColumn(name = "student_id"),
        inverseJoinColumns = @JoinColumn(name = "course_id")
    )
    private Set<Course> courses; // A student can enroll in multiple courses

    // Getters and setters
}

@Entity
public class Course {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int id;
    private String name;

    @ManyToMany(mappedBy = "courses")
    private Set<Student> students; // A course can have multiple students

    // Getters and setters
}
  • Explanation:
    • @ManyToMany: এটি একটি সম্পর্ক নির্দেশ করে যেখানে একাধিক Student একাধিক Course এর সাথে সম্পর্কিত।
    • @JoinTable: এটি student_course নামক এক মাধ্যমিক টেবিল তৈরি করে, যেখানে দুটি টেবিলের (Student এবং Course) সম্পর্ক রক্ষা করা হয়।
    • mappedBy: এটি Course ক্লাসের মধ্যে সম্পর্ক নির্দেশ করে।

Hibernate-এ One-to-One, One-to-Many, Many-to-One, এবং Many-to-Many সম্পর্কের ম্যাপিং বেশ সহজ এবং শক্তিশালী। বিভিন্ন সম্পর্কের মধ্যে ডিপেনডেন্সি ম্যানেজমেন্ট করার জন্য Hibernate এর অ্যানোটেশন ব্যবহার করা হয়, যেমন @OneToMany, @ManyToOne, @OneToOne, এবং @ManyToMany

এই ম্যাপিংগুলি ব্যবহার করে আপনি জাভা অবজেক্ট এবং ডাটাবেস টেবিলগুলোর মধ্যে সম্পর্ক তৈরি করতে পারবেন এবং আপনার অ্যাপ্লিকেশনে ডেটাবেস ইন্টারঅ্যাকশনের কার্যক্ষমতা এবং সুবিধা বৃদ্ধি করতে পারবেন।

Content added By
Promotion

Are you sure to start over?

Loading...